package datastructure;

import java.util.Arrays;

/**
 * 移动零操作
 *
 * @author miweidong
 * @date 2021-10-14 15:28
 */
public class MobileZeroOperate {
    public static void main(String[] args) {
        int[] arr = {1, 0, 2, 0, 3, 4, 5, 0, 6};
        mobileZero(arr);
        mobileZero2(arr);
    }

    /**
     * 移动零操作，将数组中的所有零移动到数组的最后边，同时保证原数组的其他数字相对位置不发生变化
     * 交换
     * 双指针思路
     */
    public static void mobileZero(int[] arr) {
        int j = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
                j++;
            }
        }
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 移动零操作 --  覆盖
     */
    public static void mobileZero2(int[] arr) {
        int j = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                if (i != j) {
                    arr[j] = arr[i];
                    arr[i] = 0;
                }
                j++;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
